This invention relates to monitoring devices, and more particularly to the real time monitoring and comparing of the operation of a device with analytical predictions of correct or desired operation of the device.
Broadly speaking, a difficult and time consuming task associated with improper operation of a device relates to the identification of problems responsible for improper operation. Once a problem has been clearly identified, well known techniques may be applied to correct the problem. While the task of identifying the source of problems does occur in a repair process, the more demanding and elusive problems seem to appear during the design phase of a device. In such an environment, numerous problems of varying scope are encountered. Frequently, an observed problem may result from several problems, with a somewhat complicated interaction among the various individual problems.
There are a number of considerations associated with the problem identification process. Fundamental to the process is the requirement of being able to monitor an operational environment associated with a device without disturbing the monitored environment; or in the alternative, to minimize the disturbance on the monitored environment by the monitoring process. This requirement has been long recognized, and by way of example, can be observed in the usual high input impedance, or capacitance compensated devices normally associated with typical monitoring devices.
An additional consideration associated with the process of identifying problems associated with devices relates to the complexity of the design of a device. Broadly speaking, the greater the complexity of a design, the greater will be the problems of identifying problems associated therewith. One method of dealing with such problems is to reduce a large design down into a number of smaller units, and thereafter to individually consider problems associated with the various units. While such an approach may be applied in those circumstances when the nature of a design permits such reduction, such an approach does not provide insight into problems of an interactive nature among the various units.
A further consideration associated with the process of problem identification relates to the speed at which a device may operate. In particular, with the higher speeds which are frequently associated with advanced device designs, further considerations are introduced. In particular, in high speed operations the time between the occurrence of events can become quite small, and the number of events which occur quite large. As a result of the foregoing, the location of problems in such an environment can result in the collection of large amounts of data. The subsequent analysis of such prodigious amounts of information can in itself present problems requiring sophisticated and often time consuming analysis techniques. An alternate way of dealing with such a situation involves reducing the speed at which a device operates. However, such an approach introduces a disturbance into the monitored environment by creating an artificial environment differing from the normal operational environment. While such an altered environment may be acceptable in some situations, the dynamic aspects of many designs frequently cannot be supported during a reduction of operating speed. In addition thereto, altering an environment by changing the speed at which a process occurs can introduce further changes which may distort the representation of a problem. A yet further consideration associated with the process of identifying problems associated with devices relates to the manner in which a device may be implemented. In particular, when a new design is implemented as an integrated circuit, or includes devices implemented as integrated circuits, significant restrictions on the availability of information related to the overall operation may be introduced. By way of example, a particular device which performs a given function may have associated with it's internal operation any number of related signals which in themselves represent information of various events indirectly related to the final output of the particular device, but not otherwise generally of interest. However, in the process of identifying the source of incorrect operation of a system which is implemented either as an integrated circuit, or includes integrated circuits in it's design, the aforementioned signals which occur internal to the integrated circuit could provide revealing information with respect to associated problems. Unfortunately, such signals internal to the integrated circuits are not generally available for direct monitoring. In short, the advantages which are gained through the use of integrated circuits, such as compactness, price, and/or speed of operation, carry with them the disadvantages of unavailability of certain information which may necessarily be generated internal to the integrated circuit. Consequently, while the use of integrated circuits may offer significant advantages from both a technical as well as econommic standpoint, their use may likewise presents a significant impediment to the location of associated problems, particularly during a design phase.
In the past, the foregoing problems have been addressed in numerous ways. In the most fundamental approach, corrective action is based entirely upon observation of symptoms, and depends heavily upon a thorough understanding of the operation of the device, and a degree of intuitiveness on the part of the observer. However, with increasingly complex designs, such an approach frequently does not provide an efficient manner in which to determine the source of observed problems.
A second approach to the problem of identifying the source of malfunctions is based upon the use of a known good device against which the operation of the device in question is compared. Broadly stated, such an approach involves the application of identical signals or conditions to both the device whose operation is questioned, as well as to the known good device. Thereafter, the resultant signals from each device are compared, and used to provide guidance in the determination of the cause of a malfunction. While such an approach can provide an approach to the problem identification process, it nevertheless has a number of serious shortcomings. Fundamental among the shortcomings is the requirement of a known good device. From a practical standpoint, the acquisition of a known good device for such use commonly presents the problem of either acquiring the necessary known good device from a supply source, or in the alternative requires building such a device. In the case when the needed device is of the nature of an existing pre-fabricated product, such as a printed circuit card, the problem can be minimal. However, when the device in question is a highly complex integrated circuit, such as a microprocessor or in particular, a custom integrated circuit, the task of acquiring a known good device can become more involved. The problem becomes further acute when signals present within the device which are necessarily generated in the process of producing the final output of the integrated circuit are of interest. In such a situation, it may well become necessary to construct such a device from discrete parts or from other integrated circuits. Such a situation can easily become extremely costly, not only in terms of time, but also in terms of the resources and expertise necessary for such a project.
In addition to the foregoing, other techniques which are employed with respect to microprocessor based designs include the use of emulators and monitor programs. Broadly stated, such approaches provide a limited amount of information with respect to the internal operation of microprocessor based devices, but generally involve some degree of degradation of performance of the device or the associated operational environment. Such degradation is generally unavoidable as it represents an overhead necessary for the performance of the monitoring function. In particular, the use of emulators or software monitor programs generally degrade the time transparency of the monitoring tool. While the impact of such degradation is application dependent, it is undesirable, and a more preferred approach would include either the further minimization or the complete elimination of such side effects.
The foregoing considerations can be illustrated with respect to a microprocessor based designed by the following. Generally speaking, the signals associated with a microprocessor can be broadly classified into three groups: control signals, address signals and data signals. These signals are used to electrically interface a microprocessor with the components associated therewith. Consequently, monitoring these signals can provide some indication of the operations occurring within the microprocessor. A number of techniques have been employed in the past based upon this approach.
In one technique, the address signals from a microprocessor are segregated into two groups. Each address signal present within each group is then assigned a particular binary weight. Thereafter, a corresponding analog signal is derived for each of the signal groups having a magnitude proportional to the binary weight of the signal present on the address lines within each of the two groups. This is generally accomplished through the use of a digital-to-analog converter device. Thereafter, the two analog output signals are used to control the horizontal and vertical deflection plates on an oscilloscope. The resulting display on the oscilloscope will consequently provide some information with respect to the location in memory wherein the microprocessor is currently active. While such an approach does offer the advantage of not disturbing the operational environment within the microprocessor, the information so provided with respect to the internal operation of the microprocessor is very limited.
In yet another technique employing a visual monitoring device, each unique location in memory for a designated portion of memory is assigned a particular location on a visual monitoring device, and the contents of the associated memory location are displayed therein. Consequently, by observing the resulting visual display, it is possible to gain some insight regarding the activities of the microprocessor with respect to the memory.
The foregoing examples are but a few of the approaches which have been employed in the past to gain insight on the internal operations of a microprocessor by monitoring the various signals associated therewith. It will be observed that while each approach shares the common advantage of not disturbing the operation of a program within a microprocessor, the information provided by the monitoring technique has been somewhat limited, failing to provide comprehensive information relating to the internal operations of the microprocessor.
In yet a different approach to the monitoring problem, the microprocessor has been used to monitor itself. In such an approach, a series of programs are used to direct the microprocessor to monitor the contents of various registers and the status of events occurring internal to the microprocessor, and thereafter to report the results.
In one such approach the microprocessor operates under the control of a control program, often referred to as a "monitor program". Operating under the control of the monitor program, the microprocessor performs selected instructions present in a particular program of interest under the strict control of an operator. In such an approach, it is possible for the operator to exercise greater control over the activities of the microcprocessor than would otherwise be possible. Such control activities would normally include control over the execution of sequence of instructions, e.g., executing instructions on a one-by-one basis, or executing instructions in groups. At any point in the execution process, it would be possible to monitor the internal state of the microprocessor, and report the status to the operator. Other control activities would include the ability to individually examine, and if necessary change, the contents of any location in an associated memory unit. By employing the approach of using the microprocessor to monitor itself, much greater control and monitoring of the activities of the microprocessor is possible. By using such an approach, the monitoring of parameters internal to the microprocessor is frequently limited only by the complexity of the monitor program itself.
However, notwithstanding the advantages presented by using the microprocessor to monitor itself, such an approach has an inherent short coming which is fundamental to the process. In particular, the basic environment existing during the execution of program instructions is disturbed. This follows from the fact that the microprocessor must not only execute instructions associated with a program of interest, but must also execute the instructions associated with the monitor program. By so executing the monitor program, the microprocessor is performing tasks that it otherwise would not do if it were executing the program alone. Such a short coming can present disadvantages of varying scope. One such disadvantage is in the time required for the execution of the program of interest. Since the microprocessor having to execute both the program of interest as well as the monitor program, additional execution time is clearly required. While this may be acceptable under some conditions, it can be most undesirable under others. In particular, in an application in which it is desired to monitor an environment wherein the microprocessor must not only execute a program of interest, but must also respond to events which are occurring external to the microprocessor, the imposing upon the microprocessor of the additional task of executing the monitor program can significantly alter the basic environment which is desired to be monitored. This result follows from the fact that the time which the microprocessor would otherwise dedicate to the program of interest and responding to events which are occurring external to the microprocessor is reduced by the amount of time required to perform the appropriate portions of the monitor program. Consequently such an approach has the serious short coming of disturbing the environment which is desired to be monitored.
From the foregoing it is observed that while the first basic approach involving the monitoring of the signals from a microprocessor functions in a manner transparenerious short coming of disturbing the environment which is desired to be monitored.
From the foregoing it is observed that while the first basic approach involving the monitoring of the signals from a microprocessor functions in a manner transparent to programs which the microprocessor may be executing, such an approach provides very limited information regarding the particular operations occurring internally to a microprocessor.
In a similar manner, it is observed that while the second basic approach involving using a microprocessor to monitor itself does provide more detailed information regarding the internal operations of a microprocessor, such an approach has the disadvantage of disturbing the environment within the microprocessor in which programs execute.
From the foregoing it is apparent that there are a number of shortcomings in the prior art in determining the source of problems associated with improper device operation. Undesirable effects present with such approaches either violate a fundamental consideration of monitoring techniques by disturbing the monitored environment, or burdening available resources by requiring the construction of models.